akw27@boulderdash.cl.cam.ac.uk
+akw27@labyrinth.cl.cam.ac.uk
++bd240@boulderdash.cl.cam.ac.uk
kaf24@labyrinth.cl.cam.ac.uk
kaf24@plym.cl.cam.ac.uk
kaf24@striker.cl.cam.ac.uk
+ lynx@idefix.cl.cam.ac.uk
smh22@boulderdash.cl.cam.ac.uk
+smh22@uridium.cl.cam.ac.uk
#include <xeno/event.h>
#include <xeno/dom0_ops.h>
#include <asm/io.h>
-
+#include <asm/domain_page.h>
+ #include <asm/msr.h>
+ #include <xeno/multiboot.h>
+
+ #define L2_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_USER|_PAGE_ACCESSED)
+ #define L1_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_USER|_PAGE_ACCESSED|_PAGE_DIRTY)
+
+ extern int nr_mods;
+ extern module_t *mod;
+ extern unsigned char *cmdline;
rwlock_t tasklist_lock __cacheline_aligned = RW_LOCK_UNLOCKED;
* <one page>
*/
#define MB_PER_DOMAIN 16
- #include <asm/msr.h>
- #include <xeno/multiboot.h>
- extern int nr_mods;
- extern module_t *mod;
- extern unsigned char *cmdline;
int setup_guestos(struct task_struct *p, dom0_newdomain_t *params)
{
-#define ALLOC_PAGE_FROM_DOMAIN() \
- ({ alloc_address -= PAGE_SIZE; __va(alloc_address); })
+#define L2_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_USER|_PAGE_ACCESSED)
+#define L1_PROT (_PAGE_PRESENT|_PAGE_RW|_PAGE_USER|_PAGE_ACCESSED|_PAGE_DIRTY)
+#define ALLOC_FRAME_FROM_DOMAIN() (alloc_address -= PAGE_SIZE)
char *src, *dst;
int i, dom = p->domain;
- unsigned long start_address = MAX_MONITOR_ADDRESS;
+ unsigned long start_address, phys_l1tab, phys_l2tab;
unsigned long cur_address, end_address, alloc_address, vaddr;
unsigned long virt_load_address, virt_stack_address, virt_shinfo_address;
unsigned long virt_ftable_start_addr = 0, virt_ftable_end_addr;